<?php

Yii::import('application.modules.mail.models._base.BaseMail');

class Mail extends BaseMail {

    const ESTADO_PENDIENTE = 'PENDIENTE';
    const ESTADO_ENVIADO = 'ENVIADO';
    const ESTADO_NO_ENVIADO = 'NO_ENVIADO';

    public $date_first;
    public $date_last;
    public $fechas;
    public $plantilla;
    public $contactos;

    /**
     * @return Mail
     */
    public static function model($className = __CLASS__) {
        return parent::model($className);
    }

    public static function label($n = 1) {
        return Yii::t('app', 'Mail|Mails', $n);
    }

    public function relations() {
        return array_merge(parent::relations(), array(
            'contacto' => array(self::BELONGS_TO, 'Contacto', 'contacto_id'),
        ));
    }

    public function getEstadoEmailOpciones() {
        return array(
            self::ESTADO_PENDIENTE => Yii::t('app', 'Pendiente'),
            self::ESTADO_ENVIADO => Yii::t('app', 'Enviado'),
            self::ESTADO_NO_ENVIADO => Yii::t('app', 'No Enviado'),
        );
    }

    public function rules() {
        return array(
            array('asunto, contenido, email, usuario_creacion_id, medio_envio', 'required'),
            array('contactos', 'required', 'on' => 'insert'),
            array('fechas', 'required', 'on' => 'reporte'),
            array('usuario_creacion_id', 'numerical', 'integerOnly' => true),
            array('email', 'email'),
            array('asunto', 'length', 'max' => 200),
            array('email, contacto_id', 'length', 'max' => 45),
            array('estado', 'length', 'max' => 10),
            array('fecha_envio', 'safe'),
            array('estado', 'in', 'range' => array('PENDIENTE', 'ENVIADO', 'NO_ENVIADO')), // enum,
            array('fecha_envio, estado', 'default', 'setOnEmpty' => true, 'value' => null),
            //On Search
            array('date_first, date_last', 'required', 'on' => 'search'),
            array('id, asunto, contenido, email, fecha_creacion, fecha_envio, usuario_creacion_id, estado, contacto_id,date_first, date_last', 'safe', 'on' => 'search'),
        );
    }

    public function search() {
        $criteria = new CDbCriteria;

        $criteria->compare('id', $this->id);
        $criteria->compare('asunto', $this->asunto, true);
        $criteria->compare('contenido', $this->contenido, true);
        $criteria->compare('email', $this->email, true);
//        $criteria->compare('fecha_creacion', $this->fecha_creacion, true);
        $criteria->compare('fecha_envio', $this->fecha_envio, true);
        $criteria->compare('usuario_creacion_id', $this->usuario_creacion_id);
        $criteria->compare('estado', $this->estado, true);
        $criteria->compare('contacto_id', $this->contacto_id, true);
        if ((isset($this->date_first) && trim($this->date_first) != "") && (isset($this->date_last) && trim($this->date_last) != ""))
            $criteria->addBetweenCondition('t.fecha_creacion', '' . Util::FormatDate($this->date_first, "Y-m-d") . ' 00:00:00', '' . Util::FormatDate($this->date_last, "Y-m-d") . ' 23:59:59');

        return new CActiveDataProvider($this, array(
            'criteria' => $criteria,
        ));
    }

    public function scopes() {
        return array(
            'fecha_mas_reciente' => array(
                'order' => 't.fecha_creacion DESC',
            ),
        );
    }

    public function rango($fechaIni, $fechaFin) {
        $fechaIni = Util::FormatDate($fechaIni, 'Y-m-d');
        $fechaFin = Util::FormatDate($fechaFin, 'Y-m-d');
        $this->getDbCriteria()->mergeWith(
                array(
                    'condition' => "fecha_creacion BETWEEN :fechaIni AND :fechaFin ",
                    'params' => array(
                        ':fechaIni' => $fechaIni . " 00:00:00 ",
                        ':fechaFin' => $fechaFin . " 23:59:59",
                    ),
                    'order' => 'fecha_creacion DESC',
                )
        );
        return $this;
    }

    public function attributeLabels() {
        return array_merge(parent::attributeLabels(), array(
            'fechas' => Yii::t('app', 'Filtro'),
                )
        );
    }

}
